/**
 * 
 */
$(function() {
	initUI();
	events();
});

function initUI() {
	// 初始化treegrid
	$('#orgTreeGrid').treegrid({

		// 定义列
		columns : [ [ {
			field : 'name',
			title : '名称',
			width : 33.3,
		}, {
			field : 'code',
			title : '编码',
			width : 33.3,
		}, {
			field : 'description',
			title : '描述',
			width : 33.3,
		} ] ],
		url : 'org/getOrgByPid.action',
		// 必须
		treeField : 'name',
		// 必须
		idField : 'id',
		// 必须$.fn.treegrid.defaults.loadFilter（jqueryUtil.js）
		parentField : 'pid',
		// 行号
		rownumbers : true,
		// 列宽
		fitColumns : true,
		striped : true,
		animate : true,
		fit : true,
		border : false,
		// 添加顶部工具栏
		toolbar : '#gridToolBar'

	});

	// 初始化dialog
	$('#addDlg').dialog({

		width : 350,
		height : 260,
		modal : true,
		closed : true,
		collapsible : false,
		minimizable : false,
		maximizable : false,
		onBeforeOpen:function(){
			$('#pidInput').combotree('reload');
		},
		// 关闭后清空form中input的值
		onClose : function() {
			$('#addForm').form('reset');
		},
		buttons : '#addDlgButtBar'
	});

	// 初始化添加框中input组件
	$('#pidInput').combotree({
		url : 'org/getOrgCatalog.action',
		idFiled : 'id',
		textFiled : 'name',
		parentField : 'pid',
	});
	$('#nameInput').textbox({
		required : true,
	});
	$('#codeInput').textbox({
		required : true,
	});
	$('#descriptionInput').textbox({
		multiline : true,
		height : 60
	});
}

function events() {
	// 打开添加对话框
	$('#addButt').bind('click', function() {
		var selected = $('#orgTreeGrid').treegrid('getSelected');
		if (selected) {
			$('#pidInput').combotree('setValue', selected.id);
		} 
		$('#addDlg').data('editType', 'add');
		$('#addDlg').dialog('setTitle', '添加').dialog('open');
	});
	// 打开更新对话框
	$('#updateButt').bind('click', function() {
		var selected = $('#orgTreeGrid').treegrid('getSelected');
		if (selected) {
			$('#addDlg').data('editType', 'update');
			$('#addForm').form('load',selected);
			$('#addDlg').dialog('setTitle', '修改').dialog('open');
		} else {
			sendMessage('提示', '请选择需要修改的机构！')
		}

	});
	// 删除操作
	$('#delButt').bind('click', function() {
		var selected = $('#orgTreeGrid').treegrid('getSelected');
		if (selected) {
			var title = '删除-' + selected.name;
			var msg = '确定删除' + selected.name
			$.messager.confirm(title, msg, function(isSure) {
				if (isSure) {
					$.ajax({
						url : 'org/delete.action',
						data : {
							'id' : selected.id
						},
						success : function(result) {
							if (result.success) {
								sendMessage('提示', '删除机构成功！');
								$('#orgTreeGrid').treegrid('remove',selected.id);
							} else {
								sendMessage('提示', result.msg);
							}
						}
					})
				}
			});

		} else {
			sendMessage('提示', '请选择需要删除的机构！')
		}
	});
	// 展开树
	$('#expandButt').bind('click', function() {
		$('#orgTreeGrid').treegrid('expandAll');
	});
	// 折叠树
	$('#collapseButt').bind('click', function() {
		$('#orgTreeGrid').treegrid('collapseAll');
	});
	// 添加或修改对话框的提交
	$('#saveButt').bind('click', function() {
		var url = '';
		var successMsg = '';
		var errorMsg = '';
		if ($('#addDlg').data('editType') == 'add') {
			url='org/add.action';
			successMsg='添加机构成功！';
			errorMsg = '添加机构失败，原因如下：</br>';
		} else {
			url='org/update.action';
			successMsg='修改机构成功！';
			errorMsg = '修改机构失败，原因如下：</br>';
		}

		$('#addForm').form('submit', {
			url : url,
			onSubmit : function() {
				return $(this).form('validate');
			},
			success : function(result) {
				result = $.parseJSON(result);
				if (result.success) {
					$('#addDlg').dialog('close');
					sendMessage('提示',successMsg);
					$('#orgTreeGrid').treegrid('reload')
				} else {
					$.each(result.message,function(i,msg){
						errorMsg+=msg;
						errorMsg+='</br>';
					});
					sendMessage('提示',errorMsg);
				}

			}
		});

	});
	// 添加或修改对话框的取消
	$('#cancelButt').bind('click', function() {
		$('#addDlg').dialog('close');
	});

}

function sendMessage(title, msg) {
	$.messager.show({
		title : title,
		msg : msg,
		timeout : 6000,
		showType : 'slide'
	})
}